From 55fe917aad359c2b40653158da8d58400dda857d Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Fri, 15 Jul 2005 15:06:52 +0000 Subject: [PATCH] Take the parent folder path instead of the display name, to avoid doing 2005-07-15 Federico Mena Quintero * gtk/gtkfilechooserdefault.c (should_respond_after_confirm_overwrite): Take the parent folder path instead of the display name, to avoid doing duplicated work in gtk_file_chooser_default_should_respond(). --- gtk/gtkfilechooserdefault.c | 123 ++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 69 deletions(-) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index b524b67b0b..a04a3b42a9 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -5972,43 +5972,6 @@ confirm_dialog_should_accept_filename (GtkFileChooserDefault *impl, return (response == GTK_RESPONSE_ACCEPT); } -/* Does overwrite confirmation if appropriate, and returns whether the dialog - * should respond. Can get the file part from the file list or the save entry. - */ -static gboolean -should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl, - const gchar *file_part, - const gchar *folder_display_name) -{ - GtkFileChooserConfirmation conf; - - if (!impl->do_overwrite_confirmation) - return TRUE; - - g_assert (file_part != NULL); - g_assert (folder_display_name != NULL); - - conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM; - - g_signal_emit_by_name (impl, "confirm-overwrite", &conf); - - switch (conf) - { - case GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM: - return confirm_dialog_should_accept_filename (impl, file_part, folder_display_name); - - case GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME: - return TRUE; - - case GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN: - return FALSE; - - default: - g_assert_not_reached (); - return FALSE; - } -} - static char * get_display_name_for_folder (GtkFileChooserDefault *impl, const GtkFilePath *path) @@ -6053,6 +6016,53 @@ get_display_name_for_folder (GtkFileChooserDefault *impl, return display_name; } +/* Does overwrite confirmation if appropriate, and returns whether the dialog + * should respond. Can get the file part from the file list or the save entry. + */ +static gboolean +should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl, + const gchar *file_part, + const GtkFilePath *parent_path) +{ + GtkFileChooserConfirmation conf; + + if (!impl->do_overwrite_confirmation) + return TRUE; + + conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM; + + g_signal_emit_by_name (impl, "confirm-overwrite", &conf); + + switch (conf) + { + case GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM: + { + char *parent_display_name; + gboolean retval; + + g_assert (file_part != NULL); + + parent_display_name = get_display_name_for_folder (impl, parent_path); + if (!parent_display_name) + return TRUE; /* Huh? Did the folder disappear? Let the caller deal with it */ + + retval = confirm_dialog_should_accept_filename (impl, file_part, parent_display_name); + g_free (parent_display_name); + return retval; + } + + case GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME: + return TRUE; + + case GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } +} + /* Implementation for GtkFileChooserEmbed::should_respond() */ static gboolean gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed) @@ -6125,23 +6135,9 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed) return FALSE; } else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE) - { - const char *file_part; - char *folder_display_name; - gboolean retval; - - file_part = get_display_name_from_file_list (impl); - g_assert (file_part != NULL); - - folder_display_name = get_display_name_for_folder (impl, impl->current_folder); - if (folder_display_name != NULL) - { - retval = should_respond_after_confirm_overwrite (impl, file_part, folder_display_name); - g_free (folder_display_name); - } - else - retval = TRUE; /* Huh? Did the folder disappear? Let the caller deal with it */ - } + return should_respond_after_confirm_overwrite (impl, + get_display_name_from_file_list (impl), + impl->current_folder); else return TRUE; @@ -6227,23 +6223,12 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed) if (file_exists_and_is_not_folder) { const char *file_part; - char *folder_display_name; - - g_assert (!is_file_part_empty); file_part = _gtk_file_chooser_entry_get_file_part (GTK_FILE_CHOOSER_ENTRY (impl->save_file_name_entry)); - g_assert (file_part != NULL); - - folder_display_name = get_display_name_for_folder (impl, parent_path); - if (folder_display_name != NULL) - { - retval = should_respond_after_confirm_overwrite (impl, file_part, folder_display_name); - g_free (folder_display_name); - } - else - retval = TRUE; /* Huh? Did the folder disappear? Let the caller deal with it */ - } else - retval = TRUE; + retval = should_respond_after_confirm_overwrite (impl, file_part, parent_path); + } + else + retval = TRUE; } else /* GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER */ { -- 2.30.2